package fr.upstlse.glre.client.espacededie.commun.actualite;

import java.util.List;

import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;

import fr.upstlse.glre.client.constante.fields.ActualiteConstante;
import fr.upstlse.glre.client.utilitaires.ControlerUtil;
import fr.upstlse.glre.client.vo.actualite.ActualiteSearchCriteriaVOGWT;
import fr.upstlse.glre.client.vo.actualite.ActualiteVOGWT;

public class LireActualites extends Composite {

	ContentPanel lecteurPanel;

	public LireActualites() {
		createPanel();
		initWidget(lecteurPanel);
	}

	private void createPanel() {
		lecteurPanel = new ContentPanel();
		lecteurPanel.setAutoWidth(true);
		lecteurPanel.setWidth(300);
		lecteurPanel.setId(ActualiteConstante.LIREACTUALITE_ID
				.getValue());
		lecteurPanel.setBorders(true);
		lecteurPanel.setCollapsible(true);
		lecteurPanel.setExpanded(true);
		lecteurPanel
				.setHeading(ActualiteConstante.LIREACTUALITE_HEADER_TEXT
						.getValue());
		lecteurPanel.getHeader().setStyleAttribute("background", "none");
	}

	public void getActualites() {
		final MessageBox lAttente = MessageBox.wait("Chargement",
				"Chargement des actualités", "Veuillez patienter");
		AsyncCallback<List<ActualiteVOGWT>> lAsyncCallback = new AsyncCallback<List<ActualiteVOGWT>>() {

			public void onFailure(Throwable pArg0) {
				lAttente.hide();
				MessageBox.alert("Erreur", "findActualite "
						+ pArg0.getLocalizedMessage(), null);
			}

			public void onSuccess(List<ActualiteVOGWT> pArg0) {
				lAttente.hide();
				List<ActualiteVOGWT> lActualiteVOGWTs = pArg0;
				for (ActualiteVOGWT lActualiteVOGWT : lActualiteVOGWTs) {
					lecteurPanel.add(new LireActualite(lActualiteVOGWT));
				}
				lecteurPanel.layout();
			}
		};
		ActualiteSearchCriteriaVOGWT lActualiteSearchCriteriaVOGWT = new ActualiteSearchCriteriaVOGWT();
		lActualiteSearchCriteriaVOGWT.setMax(5);
		ControlerUtil.getControlerServiceAsyncInstance().findActualite(
				lActualiteSearchCriteriaVOGWT, lAsyncCallback);
	}
}
